

#ifndef IEFFECT_H
#define IEFFECT_H

#include "LibraryEngineExport.h"
#include "IEffectPass.h"
#include "Graphics\Model\Model.h"
#include <vector>
#include "Maths\Matrix4.h"

namespace CasaEngine
{
	///
	class LIBRARY_ENGINE_EXPORT IEffect
	{
	public:
		IEffect();
		~IEffect();

		void Draw(Model *pModel, const Matrix4 &viewProjModelMat_);
	
		virtual void Begin() = 0;
		virtual void End() = 0;

		std::vector<IEffectPass *>::iterator PassesBeginIterator();
		std::vector<IEffectPass *>::iterator PassesEndIterator();

	protected:
		void AddPass(IEffectPass *pPass_);
		
	private:
		std::vector<IEffectPass *> m_Passes;
	};

}  // namespace CasaEngine

#endif //IEFFECT_H
